package com.cc.wechat.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.cc.wechat.dto.request.AddFriendRequest;
import com.cc.wechat.dto.request.HandleFriendRequest;
import com.cc.wechat.dto.response.FriendResponse;
import com.cc.wechat.entity.Contact;

import java.util.List;

/**
 * 好友关系服务接口
 */
public interface ContactService extends IService<Contact> {
    
    /**
     * 发送好友请求
     * 
     * @param request 好友请求信息
     * @throws IllegalArgumentException 当请求参数不合法时抛出
     * @throws RuntimeException 当已经是好友关系或已经发送过请求时抛出
     */
    void sendFriendRequest(AddFriendRequest request);

    /**
     * 获取收到的好友请求列表
     * 
     * @return 好友请求列表
     */
    List<FriendResponse> getReceivedFriendRequests();

    /**
     * 获取发送的好友请求列表
     * 
     * @return 好友请求列表
     */
    List<FriendResponse> getSentFriendRequests();

    /**
     * 处理好友请求
     * 
     * @param requestId 请求ID
     * @param request 处理请求（接受/拒绝）
     * @throws IllegalArgumentException 当请求不存在或状态不合法时抛出
     */
    void handleFriendRequest(Long requestId, HandleFriendRequest request);

    /**
     * 获取好友列表
     * 
     * @return 好友列表
     */
    List<FriendResponse> getFriendList();

    /**
     * 删除好友
     * 
     * @param friendId 好友ID
     * @throws IllegalArgumentException 当好友关系不存在时抛出
     */
    void deleteFriend(Long friendId);

    /**
     * 更新好友备注
     * @param friendId 好友ID
     * @param remark 新的备注
     */
    void updateRemark(Long friendId, String remark);
} 